package com.jt.com.jt.provider.service;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.stereotype.Service;

@Service
public class ResourcesService {
    /**
     * @SentinelResource使用次注解描述的方法，在此方法被访问时，会在sentinel的簇点链路中显示
     * 此注解中指定的名字就是资源名，我们可以对这个资源的访问，按照指定的链路进行限流设计，
     * @return
     *
     * 此注解中的属性blockHandlerClass用于指定，出现限流异常时的异常处理类
     * blockHandler用于指定异常处理类中的方法（此方法的返回值类型，参数要与注解描述的方法一致）
     * 参数类型可以加异常类型，而且方法必须是静态
     * fallbackClass 用于指定业务异常处理类，fallback用于指向业务处理类中的
     *
     */
    @SentinelResource(value="doGetResource",
            blockHandlerClass = ResourceBlockHandler.class,//指定异常处理类
            blockHandler = "call",
            fallbackClass = ResourceFallHandler.class
            ,fallback = "call")//方法
    public String doGetResource(){
        /*int a = 10;
        a=a/0;*/
        return "do get resource";
    }

}
